<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
	</head>
	<body>
		<p>
			Le package <code>fr.upmc.alasca.centreCalcul.interne.controleurAdmission</code>
			comprend le contrôleur d'admission ainsi que ses connecteurs,
			interfaces et ports nécessaires à son fonctionnement.
		</p>
		<p>
			Le rôle du contrôleur d'admission est de recevoir des demandes
			d'exécution d'application et de les gérer.<br/>
			Chaque demande contient plusieurs informations (estimation du nombre
			d'instructions, temps de réponse souhaité...) et à partir de ces données,
			le contrôleur détermine le nombre de coeurs à allouer à cette application.
			Le contrôleur a connaissance de la topologie du centre de calcul,
			c'est à dire qu'il connait toutes les machines physiques et donc les
			ressources disponibles.<br/>
			Si, pour l'application demandée, il est possible de réserver assez
			de coeurs, le contrôleur va créer sur chaque machine physique
			disponible une machine virtuelle pour y exécuter l'application.
			Il instancie ensuite le répartiteur de requêtes à associer à
			l'application et renvoie les informations nécessaires à la connexion
			au demandeur d'applications.<br/>
			S'il n'y pas assez de ressources pour exécuter l'application, le
			contrôleur rejette simplement la demande.<br/>
			Pour se faire, le contrôleur d'admission réserve les coeurs sur les
			machines physiques. S'il a trouvé assez de ressources pour faire
			tourner l'application, les réservations sont validées. Sinon, elles
			sont annulées et remises à disposition pour d'autres applications.
		</p>
		<p>
			Le contrôleur d'admission peut également être solicité par les
			contrôleurs d'aplication.<br/>
			En effet, ceux-ci ont des besoin en ressources variables dans le
			temps et peuvent, pendant leur exécution, demander qu'on leur alloue
			plus ou moins de coeurs.<br/>
			Un contrôleur d'application ayant connaissance des machines physiques
			sur lesquelles il possède des machines virtuelles, il communique
			d'abord avec celles-ci pour changer le nombre de coeurs qui lui sont
			alloués (et ainsi ne pas surcharger le contrôleur d'admission).
			Mais dans le cas où il demande plus que ce que ses machines
			physiques peuvent lui offrir, il doit demander au contrôleur
			d'admission pour obtenir des coeurs sur une autre machine physique.<br/>
			Pour répondre au mieux à ces demandes, le contrôleur d'admission
			intègre une notion d'aribtrage.
			Lorsqu'une demande d'ajout de coeur arrive, elle est mise en attente.
			Une fois le délai d'attente expiré, le contrôleur traite toutes les
			demandes reçues par ordre de priorité, c'est à dire qu'il répond à
			l'application qui est le plus en-deçà de ses performances attendues.
		</p>
		<p>
			Enfin, c'est au contrôleur d'admission de gérer les demandes d'arrêt
			des applications, demandes soumisses par le générateur de demandes.<br/>
			Dans ces cas-ci, le contrôleur demande aux machines physiques qui
			exécutent cette application de détruire la machine virtuelle qui
			exécute l'application et de libérer les coeurs qui y sont dévolus.
			Le contrôleur peut ensuite détruire le contrôleur d'aplication.
		</p>
	</body>
</html>